import pandas as pd
from docx import Document
from docx.shared import Inches

#读取excel的数据
excel_file = r'D:\code\python\10_excel_word\data\《堡垒机账户权限变更表v3.0》.xls'
df = pd.read_excel(excel_file)  

#指定搜素条件及表格中列的名称
search_condition = '刘炜'
filtered_data = df[df['实际使用人姓名'] == search_condition]

# 打开Word文档并定位到指定表格位置
word_file = r'D:\code\python\10_excel_word\data\[非密]1.人员政审表【模板-每人填写】.docx'
doc = Document(word_file) 

table = doc.tables[0]  # 假设第一个表格是需要填入数据的表格  
  
# 确保不会超出表格的行数  
max_rows = len(filtered_data)  
max_cols = min(len(filtered_data.columns), len(table.rows[0].cells))  
  
# 填入数据到Word文档的指定表格中  
for i, row in filtered_data.iterrows():  
    for j, value in enumerate(row):  
        if i < len(table.rows) and j < max_cols:  # 确保不超出表格边界  
            cell = table.cell(i, j)  # 注意这里i不需要+1，因为Word表格索引从1开始，但我们是按行索引  
            cell.text = str(value) if pd.notna(value) else ''  # 避免非字符串或NaN值  
  
# 如果DataFrame的行数少于Word表格的行数，清除剩余的Word表格行（可选）  
for i in range(max_rows, len(table.rows)):  
    for cell in table.rows[i].cells:  
        cell.text = ''  
  
# 保存并关闭Word文档  
output_file = 'output.docx'  
doc.save(output_file)